package com.scsystem.xysc.util;

import com.scsystem.xysc.pojo.User;
import org.apache.commons.lang3.StringUtils;
import org.apache.tika.Tika;
import org.springframework.web.multipart.MultipartFile;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

/**
 * @author zhoub
 */
public class Images {
    //密码加密

    //文件上传路径
/*    @Value("${file.upload-path}")
    private static String path;*/

    /**
     * 获取文件后缀名
     *
     * @param fileName 文件名
     * @return 包含文件后缀名
     */
    public static String getSuffix(String fileName) {
        return fileName.substring(fileName.lastIndexOf("."));
    }

    /**
     * 获取文件名
     *
     * @param fileName 文件名
     * @return 文件名 不包含后缀
     */
    public static String getPrefix(String fileName) {
        return fileName.substring(0, fileName.lastIndexOf("."));
    }

    /**
     * 获取文件名
     *
     * @param fileName 文件名
     * @return 文件名 不包含后缀
     */
    public static String getFileName(String fileName) {
        return fileName.substring(fileName.lastIndexOf("/") + 1); //不包含后缀
    }

    /**
     * 获取文件名
     *
     * @param file 文件
     * @param purl 服务器上的路径
     * @param path 文件上传路径
     * @return
     */
    public static String MultipartFile(MultipartFile file, String purl, String path) {

        //文件上传路径
//        String path="D:\\tmp\\upload\\";
        //生成文件名
        String uuid = UUID.randomUUID().toString();
        //获取文件后缀名
        String fix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
        // 获取文件后缀名
        System.out.println(fix);
        if (fix.equals(".jpg") || fix.equals(".png") || fix.equals(".jpeg") || fix.equals(".webp")) {
            System.out.println("文件格式正确");
        } else {
            throw new RuntimeException("文件格式错误为 jpg/png/jpeg/webp");
        }
        //生成文件的完整名字
        String fileName = uuid + fix;
        //文件路径
        String absolutePath = purl + "/" + fileName;
        // 在服务器上直接获取图片路径+图片名字
        String url = path + fileName;
        File file1 = new File(url);//创建文件夹
        try (InputStream inputStream = new BufferedInputStream(file.getInputStream())) {
            //检测文件类型
            Tika tika = new Tika();
            //获取文件类型
            String type = tika.detect(inputStream);
            if (!StringUtils.startsWithIgnoreCase(type, "image/")) {
                throw new RuntimeException("文件类型不合法:" + type);
            }
            if (!file1.exists()) {
                file1.mkdirs();
            }
            file.transferTo(file1);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return  absolutePath;
    }
}

